package jfuzzyprincepless.negotiation;

import jfuzzyprincepless.negotiation.services.IService;

/**
 * all temporary and media information is stored here, in services.
 */
public interface INegotiationContext extends IExecutionContext {
	/**
	 * @return LAST registered service with interface
	 * @param clazz or null if no one was registered
	 */
	public <ServT extends IService> ServT getService(
		Class<ServT> clazz
	);
	
	public void registerService(IService service);
	
	public <ServT extends IService> void registerService(
		Class<ServT> clazz,
		ServT service
	);
}
